#ifndef _M_UTIL_H_
#define _M_UTIL_H_

//实用工具类的实现
// 1.获取系统时间
// 2.判断文件是否存在
// 3.获取文件所在路径
// 4.创建目录

#include<iostream>
#include<ctime>
#include<sys/stat.h>

namespace HUE 
{
    namespace util
    {
        class Date 
        {

        public:
            static size_t now() 
            {
                return (size_t)time(nullptr);
            }
  
        };
        
        class File
        {
          public:
           static bool exists(const std::string &pathname)
           {
            struct stat st; //跨平台
            if(stat(pathname.c_str(),&st)<0)
            {
                return false;
            }
            return true;
           }

           static std::string path (const std::string &pathname)
           {
                size_t pos = pathname.find_last_of("/\\");
                if(pos == std::string::npos) return ".";

                return pathname.substr(0,pos+1);
           }

           static void createDirectory(const std::string &pathname)
           {
                // ./abc/bcd/a.txt
                size_t pos =0, idx =0;//标定查找的起始位置

                while(idx < pathname.size())
                {
                    pos = pathname.find_first_of("/\\",idx);
                if(pos == std::string::npos)
                {
                    mkdir(pathname.c_str(),0777);
                }
                std::string parent_dir = pathname.substr(0,pos+1);//截取目录路径
                if(exists(parent_dir) == true) 
                {
                    idx = pos+1;
                    continue;
                }
                mkdir(parent_dir.c_str(),0777);
                idx = pos+1;
                }
           }
        };
  
    }
} 

#endif
